/**sigemptyset sigaddset */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>

static void sig_handler(int sig)
{
	printf("received sig:%d\n",sig);
}

int main(void)
{
	struct sigaction sig={0};
	sigset_t sig_set;
	sig.sa_handler=sig_handler;
	sig.sa_flags=0;
	if(-1==sigaction(SIGINT,&sig,NULL)){
		perror("sigaction error");
		return 1;
	}
	sigemptyset(&sig_set);
	sigaddset(&sig_set,SIGINT);
	if(-1==sigprocmask(SIG_BLOCK,&sig_set,NULL)){
		perror("sigprocmask error");
		exit(-1);
	}
	raise(SIGINT);
	sleep(2);
	printf("sleep end\n");
	if(-1==sigprocmask(SIG_UNBLOCK,&sig_set,NULL)){
		perror("sigprocmask error");
		exit(-1);
	}
	exit(0);
}
